//
//  UserModelDataSourceProtocol.swift
//  travelMapMvvm
//
//  Created by green on 15/9/1.
//  Copyright (c) 2015年 travelMapMvvm. All rights reserved.
//

import ReactiveCocoa

/**
 * 操作用户数据相关
 */
public protocol UserModelDataSourceProtocol {
    
    /**
     * 手机登录
     * 
     * @param telephone 手机号码
     * @param password  登录密码
     *
     * @return 登录信号
     */
    func telephoneLogin(telephone:String,password:String) -> RACSignal

    /**
     新浪登录
     
     - returns: 
     */
    func sinaLogin() -> RACSignal
    
    /**
     腾讯登录
     
     - returns: 
     */
    func qqLogin() -> RACSignal

    /**
     * 保存登录用户信息
     *
     * @param user 用户信息
     *
     * @return
     */
    func saveUser(user:UserModel)
    
    /**
     * 清除登录用户信息
     */
    func clearUser()
    
    /**
     * 查询登录用户信息
     *
     * @return 登录用户信息
     */
    func queryUser() -> UserModel?
    
    /**
     查询登录页面默认显示的手机号
     
     - returns:
     */
    func queryLoginPageDefaultTelephone() -> String
    
    /**
     保存登录页面默认显示的手机号
     
     - parameter defaultTelephone: 登录页面默认显示的手机号
     
     - returns: 
     */
    func saveLoginPageDefaultTelephone(defaultTelephone:String)
    
    /**
     * 手机注册
     *
     * @param telephone 手机号码
     * @param password 用户密码
     *
     * @return  手机注册信号
     */
    func telephoneRegister(telephone:String, password: String) -> RACSignal
    
    /**
     * 忘记密码
     *
     * @param telephone 手机号码
     * @param password 用户密码
     *
     * @return  忘记密码信号
     */
    func forgetPwd(telephone: String, password: String) -> RACSignal
    
    /** 
     * 修改用户信息
     *
     * @param userId    用户ID
     * @param userName  用户昵称
     * @param email     用户邮箱
     * 
     * @return 修改用户信息
     */
    func modifyUInfo(userId:Int, userName:String?,email:String?, mobile:String?, userPicUrl:String?) -> RACSignal
    
    /*
     * 上传头像
     *
     * @param userId 用户ID
     * @param headImage 用户头像图片
     *
     * @return 上传头像信号
     */
    func uploadHeadImage(userId:Int, headImage:UIImage) -> RACSignal
    
}